﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Xml;


namespace Voluntariar.WEB.Include.Handler
{
    public class AutoCompleteBuscaUsuarios : Util.HandlerBase
    {

        #region Atributos

        private string valorBusca;
        private int idUsuario;
        
        #endregion

        #region Eventos

        public override void ProcessRequest(HttpContext httpContext)
        {
            try
            {
                base.ProcessRequest(httpContext);

                this.CarregarXml();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Métodos

        private XmlNode GerarNode(Sistema.Entidades.Usuarios user, XmlDocument objXml)
        {
            XmlNode objXmlNode = objXml.CreateNode(XmlNodeType.Element, "Usuario", string.Empty);

            // Nome
            XmlAttribute objAttrToolTip = objXml.CreateAttribute("ID");
            objAttrToolTip.InnerText = user.ID.ToString();
            objXmlNode.Attributes.Append(objAttrToolTip);

            // Codigo
            XmlAttribute objAttrTexto = objXml.CreateAttribute("Nome");
            objAttrTexto.InnerText = user.nome.ToString();
            objXmlNode.Attributes.Append(objAttrTexto);

            // Numero Elemento Despesa.
            objAttrTexto = objXml.CreateAttribute("Imagem");
            objAttrTexto.InnerText = user.imagem;
            objXmlNode.Attributes.Append(objAttrTexto);

            return objXmlNode;
        }

        private XmlDocument GerarXml(string nome, int ID)
        {

            XmlDocument objXml = new XmlDocument();
            XmlDeclaration objXmlDeclaration = objXml.CreateXmlDeclaration("1.0", "utf-8", null);
            objXml.InsertBefore(objXmlDeclaration, objXml.DocumentElement);

            XmlNode objXmlNode = objXml.CreateNode(XmlNodeType.Element, "Usuarios", string.Empty);
            objXml.AppendChild(objXmlNode);

            List<Sistema.Entidades.Usuarios> Lista = Voluntariar.Sistema.DAO.UsuarioDAO.PesquisaUsuariosBusca(nome, ID);

            foreach (Sistema.Entidades.Usuarios item in Lista)
                objXml.DocumentElement.AppendChild(this.GerarNode(item, objXml));

            return objXml;
        }

        private void CarregarXml()
        {
            CarregarParametros();
            XmlDocument xml = GerarXml(this.valorBusca, this.idUsuario);
            RetornaXml(xml);
        }
        
        private void CarregarParametros()
        {
            this.valorBusca = base.RecuperarParametroString("q");

            if (!string.IsNullOrEmpty(this.valorBusca))
                this.valorBusca = this.valorBusca.Replace("\"", "").Replace("*", "").Replace("%", "");

            this.idUsuario = base.RecuperarParametroInteiro("p");

            if (idUsuario > 0)
                this.idUsuario = Convert.ToInt32(this.idUsuario.ToString().Replace("\"", "").Replace("*", "").Replace("%", ""));
        }
        
        private void RetornaXml(XmlDocument objXml)
        {
            base.httpContext.Response.Clear();
            base.httpContext.Response.ClearContent();
            base.httpContext.Response.ClearHeaders();
            base.httpContext.Response.ContentType = "text/xml";
            base.httpContext.Response.Write(objXml.OuterXml);
        }

        #endregion

    }
}